import java.lang.reflect.Parameter;
import java.util.HashMap;
import java.util.Map;

/**
 * 有一个字符串它的构成是词+空格的组合，如“北京 杭州 杭州 北京”， 要求输入一个匹配模式（简单的以字符来写），
 * 比如 aabb, 来判断该字符串是否符合该模式， 举个例子：
 * pattern = "abba", str="北京 杭州 杭州 北京" 返回 ture
 * pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
 * pattern = "baab", str="北京 杭州 杭州 北京" 返回 ture
 * @author TANGYE
 * @2021/3/2 16:37
 */
public class MatchCity {

    private static boolean isEmpty(String str){
        if (null == str || "".equals(str)){
            return true;
        }
        return false;
    }

    public static boolean match(String pattern, String cityStr){
        if (isEmpty(pattern)||isEmpty(cityStr)){
            return false;
        }
        String[] cities = cityStr.split(" ");
        if (pattern.length() != cities.length){
            return false;
        }
        // 存放字母首次出现对应的城市
        Map<String, String> map = new HashMap<>();
        for (int i = 0; i < cities.length; i++) {
            String zm = String.valueOf(pattern.charAt(i));
            String cityChs = map.get(zm);
            if (isEmpty(cityChs)){
                map.put(zm, cities[i]);
                continue;
            }
            if (!cityChs.equals(cities[i])){
                return false;
            }
        }
        return true;
    }

    public static void main(String[] args) {
        // pattern = "abba", str="北京 杭州 杭州 北京" 返回 ture
        //pattern = "aabb", str="北京 杭州 杭州 北京" 返回 false
        //pattern = "baab", str="北京 杭州 杭州 北京" 返回 ture
        String pattern = "aabb";
        String str = "北京 杭州 杭州 北京";
        System.out.println(match(pattern,str));
    }
}
